package com.ruanda.spongebobrunner.utils;

import android.content.Context;
import android.util.DisplayMetrics;

/**
 * 响应式单位类，用于处理不同设备上的图像尺寸适配问题
 */
public class ResponsiveUnit {
    private static ResponsiveUnit instance;
    private Context context;
    private DisplayMetrics displayMetrics;

    private ResponsiveUnit(Context context) {
        this.context = context.getApplicationContext();
        this.displayMetrics = context.getResources().getDisplayMetrics();
    }

    public static ResponsiveUnit getInstance(Context context) {
        if (instance == null) {
            instance = new ResponsiveUnit(context);
        }
        return instance;
    }

    /**
     * 将dp转换为px
     * 
     * @param dp dp值
     * @return px值
     */
    public int dpToPx(int dp) {
        return (int) (dp * displayMetrics.density);
    }

    /**
     * 将px转换为dp
     * 
     * @param px px值
     * @return dp值
     */
    public int pxToDp(int px) {
        return (int) (px / displayMetrics.density);
    }

    /**
     * 获取屏幕宽度（px）
     * 
     * @return 屏幕宽度
     */
    public int getScreenWidth() {
        return displayMetrics.widthPixels;
    }

    /**
     * 获取屏幕高度（px）
     * 
     * @return 屏幕高度
     */
    public int getScreenHeight() {
        return displayMetrics.heightPixels;
    }

    /**
     * 根据屏幕宽度计算缩放比例
     * 
     * @param baseWidth 基准宽度（通常是设计稿的宽度）
     * @return 缩放比例
     */
    public float getScaleRatioByWidth(int baseWidth) {
        return (float) getScreenWidth() / baseWidth;
    }

    /**
     * 根据屏幕高度计算缩放比例
     * 
     * @param baseHeight 基准高度（通常是设计稿的高度）
     * @return 缩放比例
     */
    public float getScaleRatioByHeight(int baseHeight) {
        return (float) getScreenHeight() / baseHeight;
    }
}